package com.pan.structual.adapter;

import com.pan.structual.adapter.adapt.ColorAdapter;
import com.pan.structual.adapter.color.MyColor;
import com.pan.structual.adapter.tool.AdapterXmlUtils;
import com.pan.structual.adapter.tool.ShowColorUtils;

import java.awt.*;
import java.util.List;

/**
 * 适配器模式
 * 优点
 * 1. 将目标类和适配者解耦，无须修改原有目标类结构
 * 2.在不修改原有代码的基础上增加新的适配器类，完全符合“开闭原则”。
 *
 *
 *
 */
public class AdapterApplication {
    public static void main(String[] args) {
        //由于这是英文颜色，无法被直接使用
        MyColor myColor = new MyColor();
        //因此引入适配器将其转为可以使用的适配器
        ColorAdapter colorAdapter;

        ShowColorUtils showColorUtils = ShowColorUtils.INSTANCE;

        //使用java.awt.Color颜色的适配器
        colorAdapter = (ColorAdapter) AdapterXmlUtils.INSTANCE.getObj("awtColor");
        colorAdapter.setMyColor(myColor);
        //将英文颜色转换未 java.awt.Color
        List<Color> awtColorList = colorAdapter.getColorList();
        showColorUtils.showAwtColorList(awtColorList);


        //换成rgb颜色的适配器
        colorAdapter = (ColorAdapter) AdapterXmlUtils.INSTANCE.getObj("rgbColor");
        colorAdapter.setMyColor(myColor);
        //将英文颜色转换为 rgb
        List<int[]> rgbColorList = colorAdapter.getColorList();
        showColorUtils.showRGBColorList(rgbColorList);

    }
}
